import numpy as np
import cv2
import pickle   #导入 pickle 模块
import gradio as gr  #导入 gradio 模块

with open('best_model.pkl','rb') as f:  #打开 best_model.pkl 文件
    model=pickle.load(f)   #从 best_model.pkl 文件中读取模型

def predict_image(image):   #定义预测函数
        image=cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)     #将图像从BGR格式转换为RGB格式
        image=cv2.resize(image,(32,32))    #将图像调整为32x32
        image=image.reshape(1,-1)   #将图像展平
        prediction=model.predict(image) #预测图像的标签
        return '狗' if prediction[0]==1 else '猫'   #返回预测结果

#创建界面
#fn=predict_image：这是你的预测函数，当用户上传图像并点击预测按钮时，这个函数会被调用。
#inputs="image"：这设置了输入类型为图像。用户可以上传一张图像，这张图像会被传递给 predict_image 函数
#outputs="text"：这设置了输出类型为文本。
#description="上传一张图，判断是猫还是狗"：这是界面的描述，告诉用户这个界面的用途。
iface=gr.Interface(fn=predict_image,inputs="image",outputs="text",title="猫狗分类器",description="上传一张图，判断是猫还是狗")




iface.launch()  #启动界面